# !/usr/bin/env python
# -*- coding: utf-8 -*-
# ------------------------------
'''
任务三:实现停电停多久问题关键算法(30分)
Lee的老家住在工业区，日耗电量非常大。
今年7月，传来了不幸的消息，政府要在7、8月对该区进行拉闸限电。政府决
定从7月1日起停电，然后隔一天到7月3日再停电，再隔两天到7月6日停电，
依次下去，每次都比上-次长一天。
Lee想知道自己到家后到底要经历多少天倒霉的停电。请编写程序帮他算一算.
注意:从键盘输入放假日期、开学日期，日期限定在7. 8月份，且开学日期大于
放假日期，然后在屏幕上输出停电天数。

([8, 8], [30, 31])
'''
# A建类
class Sulotion(object):
    # C建属性函数
    def __init__(self):
        pass

    def del_with_str(self, datas):
        '''
        处理输入的日期数据
        '''
        VC_month1 = []
        VC_day1 = []
        for i in datas:
            VC_month1.append(int(i.split('月')[0]))
            VC_day1.append(int(i.split('月')[-1].split('日')[0]))
        return VC_month1, VC_day1

    def judge_dates(self, dates):
        '''
        判断日期是否正确
        '''

        if 7 <= dates[0][0] <= dates[0][1] <= 8 and 1 <= dates[1][0] <= dates[1][1] <= 31:
           return sulotion.calculate(dates)

        else:
            print('日期输入错误！')

    def calculate(self, dates):
        '''
        [1, 3, 6, 10, 15, 21, 28]
        计算停电天数,我们要知道7，8月份总共就停十次电，一号算一个，二号+三号算一个，四五六号算一个，
        就是1+2+3....+9+10总共55天，十个倒霉天，而78月份总天数为62天，所以在8.24之后都不会停电
        '''
        flag = 0
        if dates[0][0] == 8 and dates[1][0] > 24:
            return flag
        else:
            # 用于存放一个月内特殊的那几天
            # Sn=n*a1+n(n-1)d/2
            tem_list = []
            tem = 0
            for i in range(1, 11):
                tem = int(i+i*(i-1)*1/2)
                if tem > 55:
                    break
                tem_list.append(tem)
            print(tem_list)
            add = 0
            # 放假和开学同月
            if dates[0][0] == dates[0][1] == 7 or dates[0][0] == dates[0][1] == 8 :
                for day in range(dates[1][0], dates[1][1] + 1):
                    for j in tem_list:
                        if day == j:
                            flag += 1
                            break
            # 放假和开学不同月
            else:
                flag_7 = 0
                flag_8 = 0
                for day in range(dates[1][0], 32):
                    for j in tem_list:
                        if day == j:
                            flag_7 += 1
                            break
                for day in range(1, dates[1][1] + 1):
                    for j in tem_list:
                        if day == j - 31:
                            flag_8 += 1
                            break
                flag = flag_7 +flag_8
            return flag
    def main(self):
        '''
        logic control
        '''
        datas = []
        datas.append(input('请输入放假日期（注意：放假日期大于等于7月1日，小于等于8月31日, 开学在后）例：7月4日：'))
        datas.append(input('请输入开学日期（注意：开学日期大于等于7月1日，小于等于8月31日，开学在后）例：8月4日：'))
        dates = sulotion.del_with_str(datas)
        result = sulotion.judge_dates(dates)
        if result == 0:
            print('恭喜你度过一个愉快的假期！\n')
        print('总共经历{}个倒霉天'.format(result))

if __name__ == '__main__':
    # B建实例
    sulotion = Sulotion()
    sulotion.main()
